package com.zrrd.learn.chapter04;
import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * 快排
 *
 * @author wrn
 * @version 1.0
 * @date 2023/5/27 9:35
 */

public class QuickSort {

    public static void main(String[] args) {
        int[] array = {10,13,2,4,5,9,11,1,6,7,19,34};
        quickRow(array,0, array.length-1);
        System.out.println(Arrays.toString(array));
}
    /**
     * 快排
     * @param array 数组
     * @param low   开始
     * @param high  最大元素
     */

    public static void quickRow(int[] array , int low , int high) {
        /**
         * i 表示左侧
         * j 表示右侧
         * pivot 标准 (可不可以是中间，可以不可以是0 )
         */
        int i,j,pivot;

        if(low >= high){
            return;
        }
        // 左侧从哪里开始  0
        i = low;
        //右侧从哪里开始   array.length-1
        j = high;
        //现在我们的标准是 0
        pivot = array[low];
        while (i < j) {
            //右侧
            while (array[j] >= pivot && i<j){
                j--;
            }

            //从左向右
            while (array[i] <= pivot && i<j){
                i++;
            }

            if(i < j){
                int temp = array[i];
                array[i] = array[j];
                array[j] = temp;
            }

        }
        //交换标准
        array[low] = array[i];
        array[i] = pivot;
        quickRow(array, low, i - 1);
        quickRow(array, i + 1, high);



    }
    }
